#include<iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
/*cin,cout,ifstream,ofstream,istringstream,ostringstream是对应的输入输出类。而fstream和stringstream类是可以同时进行输入和输出。
ios::in 输入方式打开文件
ios::out 输出方式打开文件(默认)
ios::app 输出方式打开文件,数据添加到文件末尾
ios::ate 打开一个已有的文件，文件指针指向末尾
ios::trunc 打开一个文件，如果文件已经存在，则删除其中全部数据，如果文件不存在则创建新的文件，如果只指定了out而没有指定app或则ate，则默认是trunc
*/
//文件输出流
void file_out()
{
	char file_name[80];
	char buffer[255];
	cout << "请输入一个文件名:" << endl;
	cin >> file_name;//如:D:\fout.txt
	//文件输出流
	ofstream fout(file_name, ios::out | ios::app);
	fout << "1231234234\n";
	fout << "234sdfsef\n";
	cin.ignore(1, '\n');
	//输入字符到数组中
	cin.getline(buffer, 255);
	//将数组中的字符输出到文件
	fout << buffer << "\n";
	//关闭输出流
	fout.close();
	system("pause");
	return;
}
//文件输入流
void file_in()
{
	string file_name = "d:\\c++_file.txt";
	ifstream fin(file_name, ios::in | ios::_Nocreate);//如果文件不存在则打开失败
	//读文件

	//char ch;
	//while (fin.get(ch))
	//{
	//	cout << ch;
	//}
	cout << fin.rdbuf();//将整个文件内容输出到标准输出流

	fin.close();
	system("pause");
	return;
}

//读一行
void read_line()
{
	string file_name = "d:\\c++_file.txt";
	ifstream fin(file_name, ios::in | ios::_Nocreate);
	char buf[1024];
	string line = "";
	int i = 0;
	while (fin.getline(buf, 1024))
	{
		cout << "第" << ++i << "行:";
		string s = buf;
		cout << s << endl;
	}
	fin.clear();
	fin.close();
	system("pause");
	return;
}
//stringstream 字符串输出流
void out_string_stream()
{

	ostringstream ostring;
	ostring << "hello c++\n";
	ostring << "hello world\n";
	cout << ostring.str();
	ostring.clear();


	string str = "i am a boy";
	istringstream istring(str);
	string s;
	while (istring >> s)
	{
		cout << s << endl;
	}

	system("pause");
	return;
}
//复制一张图片
void copy_pic()
{
	string in_file_name = "D:\\1.jpg";
	ifstream fin(in_file_name, ios::in | ios::binary);

	string out_file_name = "D:\\1_copy.jpg";
	ofstream fos(out_file_name, ios::out | ios::binary | ios::app);
	/*
	char ch;
	while (fin.get(ch))
	{
	fos << ch;
	}*/

	fos << fin.rdbuf();//rdbuf的作用是输出整个文件内容
	//关闭流
	fin.close();
	fos.close();
	system("pause");
	return;
}
int main3()
{

	//file_in();
	//copy_pic();
	//read_line();
	out_string_stream();
	return 0;
}